using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
using SMWJamecl.BusinessEntities;

namespace SMWJamecl.Repository.Mapping
{
    public class MantenimientoMap : EntityTypeConfiguration<Mantenimiento>
    {
        public MantenimientoMap()
        {
            // Primary Key
            this.HasKey(t => t.Id_Mantenimiento);

            // Properties
            this.Property(t => t.Id_Mantenimiento)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

            this.Property(t => t.Placa)
                .IsRequired()
                .IsFixedLength()
                .HasMaxLength(7);

            this.Property(t => t.Nro_comprovante)
                .IsRequired()
                .HasMaxLength(10);

            // Table & Column Mappings
            this.ToTable("Mantenimiento");
            this.Property(t => t.Id_Mantenimiento).HasColumnName("Id_Mantenimiento");
            this.Property(t => t.Placa).HasColumnName("Placa");
            this.Property(t => t.TallerId).HasColumnName("TallerId");
            this.Property(t => t.Fecha_envio).HasColumnName("Fecha_envio");
            this.Property(t => t.Fecha_regreso).HasColumnName("Fecha_regreso");
            this.Property(t => t.Nro_comprovante).HasColumnName("Nro_comprovante");
            this.Property(t => t.Monto_mant).HasColumnName("Monto_mant");

            // Relationships
            this.HasRequired(t => t.Taller)
                .WithMany(t => t.Mantenimientoes)
                .HasForeignKey(d => d.TallerId);
            this.HasRequired(t => t.Vehiculo)
                .WithMany(t => t.Mantenimientoes)
                .HasForeignKey(d => d.Placa);

        }
    }
}
